package com.junzhiit.nengji.dao;

import java.util.List;

import com.bainaeco.framework.base.dao.BaseDAO;
import com.junzhiit.nengji.bo.GoodsBO;
import com.junzhiit.nengji.bo.ModulesGoodsBO;
import com.junzhiit.nengji.bo.ModulesGoodsListBO;
import com.junzhiit.nengji.model.Goods;
import com.junzhiit.nengji.model.ModulesGoods;

public interface ModulesGoodsDAO extends BaseDAO<ModulesGoods> {

	public List<ModulesGoodsBO> findAll(ModulesGoodsListBO modulesGoodsListBO, int pageNumber, int maxPageRow);

	public int getTotalCountByAll(ModulesGoodsListBO modulesGoodsListBO);

	public int getTotalCount(String id);

	public int queryGoodsIsExist(String goodsId, String modulesId);

	public int getMaxSort(String id);

	public List<GoodsBO> findGoodsPageAll(Goods goods, String modulesId, int pageNumber, int maxPageRow);

	public int getGoodsTotalCount(Goods goods, String modulesId);
	
	/**
	 * 
	 * TODO 获取当前模块商品上一个商品
	 * 
	 * @author FebRosy
	 * @time 2018年2月26日 下午3:48:25
	 * @return ModulesGoods
	 */
	public ModulesGoods getPreModulesGoods(ModulesGoods modulesGoods);

	/**
	 * 
	 * TODO 获取当前模块商品下一个商品
	 * 
	 * @author FebRosy
	 * @time 2018年2月26日 下午3:48:02
	 * @return ModulesGoods
	 */
	public ModulesGoods getNextModulesGoods(ModulesGoods modulesGoods);

	/**
	 * 
	 * TODO 批量更新状态
	 * 
	 * @author FebRosy
	 * @time 2018年2月28日 下午4:37:21
	 * @return boolean
	 */
	public boolean batchUpdateStatus(String[] ids, Integer status);
	/**
	 * 
	 * TODO api 根据栏目code查询所有模块下的模块商品
	 * 
	 * @author Qjen
	 * @time 2018年3月7日 下午5:05:26
	 * @return List<ModulesGoodsBO>
	 *
	 */
	public List<ModulesGoodsBO> findModulesGoods(String columnCode,String cityCode,String shopId);
	
	/**
	 * TODO api 根据栏目code统计所有模块下的模块商品数量
	 * @author Dlam
	 * @time 2018年9月3日 下午1:46:43
	 * @return int
	 * 
	 */
	public int getModulesGoodsTotalCount(String columnCode,String cityCode,String shopId);
	
	public List<ModulesGoodsBO> findModulesGoodsBymodulesId(String modulesId,String cityCode,String shopId,Integer pageNumber,Integer maxPageRow);
	
	/**
	 * 
	 * TODO shop 根据栏目code查询所有模块下的模块商品
	 * 
	 * @author Qjen
	 * @time 2018年3月7日 下午5:05:26
	 * @return List<ModulesGoodsBO>
	 *
	 */
	public List<ModulesGoodsBO> findModulesGoodsBelongToShop(String columnCode,String cityCode,String shopId);
	
	
	public List<ModulesGoodsBO> findModulesGoodsByModulesCode(String modulesCode,String cityCode,String shopId,Integer pageNumber,Integer maxPageRow);
	
	/**
	 * 
	 * TODO
	 * @author FebRosy
	 * @time 2018年5月4日 下午6:31:09
	 * @return boolean
	 */
	public boolean deleteByGoodsId(String id);
	
	/**
	 * 
	 * TODO api 根据栏目code查询所有模块下的模块商品(分页)
	 * 
	 * @author Qjen
	 * @time 2018年3月7日 下午5:05:26
	 * @return List<ModulesGoodsBO>
	 *
	 */
	public List<ModulesGoodsBO> findModulesGoods(String columnCode,String cityCode,String modulesCode,Integer pageNumber, Integer maxPageRow);
	/**
	 * 
	 * TODO api 根据栏目code查询所有模块下的模块商品数量
	 * 
	 * @author Qjen
	 * @time 2018年5月22日 下午7:47:30
	 * @return Integer
	 *
	 */
	public Integer getTotalCount(String columnCode,String cityCode,String modulesCode);
	
	/**
	 * 
	 * TODO 
	 * @author FEB
	 * @time 2018年8月8日 下午9:13:35
	 * @return int
	 */
	public int getTotalCountByGoodsId(String goodsId);
	
	/**
	 * 	根据模块code查找小程序首页商品数据（每类商品前20条）
	 * @param columnCode
	 * @return
	 */
	public List<ModulesGoodsBO> findByColumnCode(String columnCode);
	
	/**
	 * 	根据 column 表 code和 modules 表 code查找分页商品（小程序首页上拉的商品数据）
	 * @param columnCode
	 * @param modulesCode
	 * @return
	 */
	public List<ModulesGoodsBO> findPaginationByCode(String columnCode, String modulesCode, Integer pageNumber, Integer maxPageRow);
	
	/**
	 * 	上面分页操作需要到的商品总数
	 * @param columnCode
	 * @param modulesCode
	 * @return
	 */
	public int getPaginationTotalCount(String columnCode, String modulesCode);
}
